package persistence;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

import model.*;
public class PersistenciaProveedor {
	
	private static PersistenciaProveedor instancia;
	
	public static PersistenciaProveedor getInstancia()
	{
		if (instancia== null)
			instancia =new PersistenciaProveedor();
		return instancia;
	}

	public Proveedor getProveedor (Integer id)
	{
		Proveedor p = null; 
		Connection con = PoolConexiones.getPoolConexiones().getConnection();
		
		try
		{
			String senten = "SELECT id, codigo, nombre, activo "
					+ "FROM Proveedor "
					+ "WHERE id = ?";
			PreparedStatement ps = null;
			ps = con.prepareStatement(senten);
			ps.setInt(1,id);
			ResultSet result = ps.executeQuery();
			while (result.next())
			{						
				p = new Proveedor(
						result.getInt("id")
						, result.getString("codigo")
						, result.getString("nombre")
						, result.getBoolean("activo")
						);								
			}
			
			PoolConexiones.getPoolConexiones().realeaseConnection(con);
			return p;
		}
	      catch( SQLException e ) 
	      {
				System.out.println("Error al consultar Proveedor: " + e.getMessage());
				e.printStackTrace();
				PoolConexiones.getPoolConexiones().realeaseConnection(con);
	      }
	      return p;
	}
	
	public ArrayList<Proveedor>  getProveedores ()
	{
		ArrayList<Proveedor> proveedores = new ArrayList<Proveedor>();
		Proveedor p = null; 
		Connection con = PoolConexiones.getPoolConexiones().getConnection();
		
		try
		{
			String senten = "SELECT id, codigo, nombre, activo "
					+ "FROM Proveedor ";
			PreparedStatement ps = null;
			ps = con.prepareStatement(senten);
			ResultSet result = ps.executeQuery();
			while (result.next())
			{						
				p = new Proveedor(
						result.getInt("id")
						, result.getString("codigo")
						, result.getString("nombre")
						, result.getBoolean("activo")
						);	
				proveedores.add(p);
			}
			
			PoolConexiones.getPoolConexiones().realeaseConnection(con);
			return proveedores;
		}
	      catch( SQLException e ) 
	      {
				System.out.println("Error al consultar Proveedor: " + e.getMessage());
				e.printStackTrace();
				PoolConexiones.getPoolConexiones().realeaseConnection(con);
	      }
	      return proveedores;
	}
	
	public Proveedor guardarProveedor (Proveedor d)
	{
	      return d;
	}
	public void eliminarProveedor (Proveedor d)
	{	      
	}		
}
